perm filename DOC2[DOC,BGB] blob
sn#095884 filedate 1974-04-11 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00023 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 ~I0,0F1~F2~P20λ13FA
C00006 00003 4.1 FIVE EASY CREATIONS.
C00009 00004 4.2 COPY, KILL AND DUAL.
C00012 00005 4.3 SWEEP COMMANDS.
C00016 00006 4.4 THE EULER COMMANDS.
C00020 00007 4.5 BODY INTERSECTION COMMANDS.
C00024 00008 4.6 CUT COMMANDS.
C00027 00009 ~I0,0λ13FA
C00031 00010 5.2 ONLINE PLOT FILE HARDCOPY: PLTVEC, XAP AND XIP.
C00035 00011 ~I0,0λ13FA
C00037 00012 6.1 PROGRAM CONTROL.
C00041 00013 6.3 BODY NAMING AND RETRIEVING.
C00045 00014 6.5 LINK FOLLOWING COMMANDS.
C00049 00015 6.5 LINK FOLLOWING COMMANDS (continued).
C00052 00016 ~I0,0λ13FA
C00055 00017 7.1 STATUS DISPLAY.
C00059 00018 7.2 HELP DISPLAY.
C00064 00019 7.5 FACE COLORING.
C00068 00020 7.7 WORLDS AND WINDOWS.
C00072 00021 ~I0,0λ2FA
C00075 00022 ~JAI150,0FA
C00078 00023 ~JAI150,0FA
C00085 ENDMK
C⊗;
~I0,0;F1~F2~P20;λ13;FA
~JC;FA SECTION 4
~JC;FBTOPOLOGICAL COMMANDS.
~λ9;JAFA
4.1 FIVE EASY CREATIONS.
4.1.1 "∞" Instant Cube.
4.1.2 "α∞" Instant Torus.
4.1.3 "X CUBE <DX> <DY> <DZ>"
4.1.4 "X CYLN <RADIUS> <N-SIDES> <DZ>"
4.1.5 "X BALL <RADIUS> <M-LONGITUDES> <N-LATITUDES>"
4.2 COPY, KILL AND DUAL.
4.2.1 "C" Copy.
4.2.2 "K" Kill.
4.2.3 "αK" Edge-Vertex Kill.
4.2.4 "βD" Dual.
4.3 SWEEP COMMANDS.
4.3.1 "S" Sweep
4.3.2 "αS" Pyramid.
4.3.3 "R" Rotation Solid Completion.
4.3.4 "X SILHOUETTE <ZMIN> <ZMAX>"
4.3.5 "X PRISMOID"
4.4 THE EULER COMMANDS.
4.4.1 "V" Make Vertex Body.
4.4.2 "E" Make Edge and Vertex.
4.4.3 "M" Midpoint an Edge.
4.4.4 "J" Join Vertices.
4.4.5 "G" Glue Faces.
4.5 BODY INTERSECTION COMMANDS.
4.5.1 "α∩" Body Intersection.
4.5.2 "α∪" Body Union.
4.5.3 "α¬" Body Subtraction.
4.5.4 "¬" Evert Body Surface Orientation.
4.5.5 "|" Invert Edge Linear Orientation.
4.5.6 "$" Make Convex.
4.5.7 "α$" Edge Slurp.
4.6 CUT COMMANDS.
"X CUT <X> <Y> <Z>" Cut Bodies, Faces and Edges.
"αX CUT <X> <Y> <Z>" Cut Faces and Edges.
"βX CUT <X> <Y> <Z>" Cut Edges.
"εX CUT" Kill Temporaries (Uncut).
4.7 PARTS TREE COMMANDS.
"A" Attach.
"D" Detach.
~λ13;JUFA
4.1 FIVE EASY CREATIONS.
4.1.1 "∞" Instant Cube.
The instant cube command places a command string for making a
particular cube into the teletype buffer. The purpose of this command
is to make a demonstration object.
4.1.2 "α∞" Instant Torus.
The instant torus command places a command string for making a
particular torus into the teletype buffer. The purpose of this command
is to make a demonstration object.
4.1.3 "X CUBE <DX> <DY> <DZ>"
The CUBE command makes a right rectangular prism with width
height and depth as given in the three arguments. The body node of
the cube is pushed into the stack, and the cube is located at the
world origin. The absolute value of the arguments is taken so that
the cube is always solid. A zero <DZ> returns a rectangular lamina
rather than a cube.
4.1.4 "X CYLN <RADIUS> <N-SIDES> <DZ>"
The CYLN makes a right prism that approximates a circular
cylinder. A zero <DZ> argument returns a circular lamina rather than
a cylinder. The <N-sides> argument is forced to be at least three.
4.1.5 "X BALL <RADIUS> <M-LONGITUDES> <N-LATITUDES>"
The BALL command makes a polyhedron that approximates a
sphere. The <M-Longitudes> and <N-Latitudes> are forced to be at
least three and two respectively.
4.2 COPY, KILL AND DUAL.
4.2.1 "C" Copy.
This command copies the body or face from the top of stack in a reasonable
manner and pushs it down. The copy of a body includes all the parts of
that body. The copy of a face, creates a two-faced body lamina coincident
with the given face.
4.2.2 "K" Kill.
This command takes the top body, face, edge or vertex and
attempts to delete it in a reasonable manner. Kill of a body deletes
it and all its parts. Kill of a face removes the given face and all
its edges and vertices but one vertex, which is placed in the center
of the given face and is returned to the stack. Kill of an edge
removes the given edge and its negative face, NFACE(E). Kill of a
vertex removes the vertex and all its edges and faces but one face,
which is returned to the stack. The kill operation is not defined in
cases which would leave one-sided faces or dangling edges; however
the necessary trihedral restrictions are not imposed so that certain
illegal kills are possible and other illegal kills are fatal.
4.2.3 "αK" Edge-Vertex Kill.
The "αK" kill of an edge removes the edge and its negative
vertex, NVT(E); the positive vertex, PVT(E), is repositioned to be at the
center of the original edge. The PVT(E) vertex is returned to the stack.
4.2.4 "βD" Dual.
~W1,500,100,1800;;JUFA
The "βD" command makes the face/vertex dual of a body; that
is all the faces become vertices and all the vertices become faces.
This command will turn dodecahedrons into icosahedrons (or jacks
into horny octahedrons) as illustrated.
~W1,1260,100,1800;;
H2;X0.70;
L270,-400;
*FIG424.PLT;FA
4.3 SWEEP COMMANDS.
4.3.1 "S" Sweep.
"βS" Sweep Cylinder, Edges Not Sharp."
This command sweeps a face into either a sheet or a solid
depending on the NCNT of the face. If the NCNT is zero, then "S" returns a new
face coincident with the given face and connected to it by new sweep
edges and rectangular sweep faces forming a prism. When the NCNT is
non-zero, only the first NCNT edges of the argument face's perimeter
are swept into new faces, for the sake of creating solids of rotation.
The "S" command applied to a vertex sweeps out a new vertex and a new edge.
The "βS" command is the same as "S" except that the new sweep edges are
marked with the NSHARP (not sharp) bit.
4.3.2 "αS" Sweep Pyramid.
"εS" Sweep Pyramid, Edges Not Sharp.
Given a face, "αS" will create a peak vertex and place it in
the center of the face connected by an edge to each of the face's original
vertices. The peak vertex is returned to the stack. Given a vertex,
the pyramid command forces all the faces of that vertex to be
triangular (as if the given vertex were a peak vertex of a pyramid).
4.3.3 "R" Rotation Solid Completion.
After a wire has been swept around, you have a shell of
rotation. To change a shell into a solid all that remains to be done
is do a series of J commands on the leading and lagging vertices of
the shell. The R command, using the NCNT to step around the pole
caps, calls the J-command for all the necessary pairs of vertices. The sweep face
is taken as an argument and nothing is returned.
4.3.4 "X SILHOUETTE <ZMIN> <ZMAX>"
This command sweeps a silhouette lamina body into a cone
between -<zmin> and -<zmax> on the Z-axis of the now camera. The
minus Z half space is the one that contains the objects visible from
the camera; that is, the camera's principle ray is the minus Z-axis
ray.
4.3.5 "X PRISMOID"
This command is like the face sweep command except that the
diagonal edges are provided across all the new sweep face rectangles forming
a prismoid of triangles rather than a prism of rectangles. (See, the
icosahedron example, 2.4).
4.4 THE EULER COMMANDS.
4.4.1 "V" Make Vertex Body.
"βV" Make Body node.
This command creates a polyhedron consisting of one vertex
and one face. The vertex is placed at the world origin. The V
command takes no arguments and leaves the new body, face and vertex
on the stack with the vertex on top. The "βV" command will make a
naked body node, that is a body with no faces, edges or vertices.
4.4.2 "E" Make Edge and Vertex.
This command creates a new edge and a new vertex starting
from an old vertex. The E command requires two arguments, the top
argument is the old vertex and the second argument must be one of the
faces to which the vertex belongs. The new edge and vertex become
associated with the given face.
4.4.3 "M" Midpoint an Edge.
This command takes an edge argument and creates a new edge and
a new vertex. The new mid vertex is positioned along the edge in
proportion to the value of DDEL. Type the commands "ε5M" in order to
make a midpoint that is geometrically in the middle of the given
edge.
4.4.4 "J" Join Vertices.
This command creates a new face and a new edge. The "J"
command has two forms. The general form of the "J" command expects
two vertices of the same face to be given on the top of the stack,
and it returns in their place a new edge and a new face with the edge
on top. The wire form of the "J" command applies only to a face that
doesn't have a closed perimeter. The wire "J" returns the other end
of the wire in the top of stack and leaves the second argument unchanged.
4.4.5 "G" Glue Faces.
This command takes two faces from the top of the stack. The
faces should be of opposite orientation, they should have the same
number of vertices, and the vertices should be nearly coincident. The
two faces are deleted along with all the edges and vertices of the
second one of them. If there were two bodies before, then one will
remain; as a body glued to itself forms a hole (or handle)
yielding a polyhedral surface of genus one greater than before. In
either case, the glue command returns the body of the faces so
formed.
4.5 BODY INTERSECTION COMMANDS.
4.5.1 "α∩" Body Intersection.
Given two different bodies from the top of the stack, if the
intersection of the space enclosed by their surfaces is not empty a
new polyhedron will be formed to represent the surface of the space
of intersection; and the given bodies will be killed.
4.5.2 "α∪" Body Union.
Given two different bodies from the top of the stack, if the
union of the space enclosed by their surfaces is simply connected
(that is a`la de Morgan: the intersection of the space enclosed by
their surfaces is not empty); then a new polyhedron will be created
representing the surface of the union of the enclosed spaces of the
given bodies. The given bodies will be killed.
4.5.3 "α¬" Body Subtraction.
Subtract the top of the stack body from the body second in
the stack (where subtraction means union of the evert of the top body
with the second body).
4.5.4 "¬" Evert Body Surface Orientation.
GEOMED polyhedra have an inside and an outside irrespective
of enclosing a finite positive volume; that is, a thing that appears to be a
cube can either be a solid in space or a space in a solid. The evert
command turns solids into holes and holes into solids.
Holes are defined as polyhedra with negative volume.
4.5.5 "|" Invert Edge Linear Orientation.
Edges are directed vectors with a negative vertex and a
positive vertex. The "|" command flips the linear orientation of an
edge by swapping its vertices, faces and wings (edge wings are discussed
in part II).
4.5.6 "$" Make Convex.
This command may be applied to a face or a body. All the
faces referred to will be split into triangles.
4.5.7 "α$" Edge Slurp.
This command will attempt to remove or darken the visually
unaesthetic edges that arise from the "$" make convex command. The
edges slurped are the one with dihedral angles of almost pi, and with
wing angles that sum to less than pi at each vertex.
4.6 CUT COMMANDS.
~JAFA
"X CUT <X> <Y> <Z>" Cut Bodies, Faces and Edges.
"αX CUT <X> <Y> <Z>" Cut Faces and Edges.
"βX CUT <X> <Y> <Z>" Cut Edges.
"εX CUT" Kill Temporaries (Uncut).
~JUFA The cut command argument specifies a cutting plane in terms
of a vector from the world origin; the direction of the vector is
normal to the desired plane, and the magnitude of the vector is the
distance of the origin from the desired plane.
~H2;X1.0;L0,50;*FIGCUT;I1325,0;JUFA
4.7 Parts Tree Structure - The Attach and Detach Commands.
~JAFA "A" ATTACH
"D" DETACH
~JUFA The parts' tree commands "A"
attach and and "D" detach, allow bodies to be connected into a tree
structure without affecting their faces, edges or vertices. The "A"
command links the body in the top of the stack to the body in
the second stack position as a sub-part (or child). The detach
command unlinks a body from its parent. Certain operations such as
the Euclidean transformations apply to a body and all its
descendents. If the top entities of the stack are
not bodies, then these commands are no-operations. Because of the
implementation, the parts structure is always kept a tree;
circularities and incest are prevented.
~I0,0;λ13;FA
~JC;FA SECTION 5
~JC;FBINPUT/OUTPUT COMMANDS.
~JAFA
"I" input B3D file. "O" output B3D file.
"αI" input CAM file. "αO" output CAM file.
"βI" input CRE film. "βO" output V2D file.
"εI" input GEM file. "εO" output GEM file.
"βZ" take commands from GEO file.
"P" output PLT file of current display buffer.
5.1 I/O COMMANDS.
~JUFA The "I" and "O" are the commands for input and output. There
are two file formats for polyhedra named B3D and GEM. The plain "O"
command will output a body (and all its parts) from the top of the
stack into a B3D file. The plain "I" command will input a body (and
all its parts) from a B3D file and will push it on the stack. The
"αI" and "αO" input and output CAM files to and from the node of the
"now" camera. The final simple I/O command is "P" which creats a plot
file of the current display.
The "εI" and "εO" commands are nearly identical to the "I"
and "O" commands, except that they read and write more of the
contents of each body, face, edge and vertex node for the sake of
GEOMES (SAIL) and GEOMEL (LISP) users. Specifically, words 0 and 8
of each node is included in the GEM format.
The meta I/O commands provide an indirect method of getting
video images into and out of GEOMED. On the input side, a television
image must first be converted into a line drawing using the program
CRE which creates CRE files; on the output side, line drawings, V2D,
are converted into televsion pictures using the program MKVID.
The "βI" command inputs a CRE film of images and places the
images on the now-camera's node. The "βO" command does a hidden line
elimination and a photometric simulation (shines the sun on all the
visible faces) in order to create
a V2D file (vectors 2-D) for the sake of MKVID.
Further details on CRE and MKVID are available from the system's
HELP command.
5.2 ONLINE PLOT FILE HARDCOPY: PLTVEC, XAP AND XIP.
There are two online hardcopy plotting devices: the
Xerox Graphics Printer, XGP and the
Calcomp plotter. A plot file (which is a display buffer) can be
plotted on the Calcomp by running the program PLTVEC. PLTVEC first
asks for point vector default: REGULAR, DASHED or VECTOR; type the
letter "R" or just type a carriage return. Next PLTVEC ask for a
scale size; type a real number between 0.1 and 2.5. A scale 1.0 will
yield a plot approximately the size of the physical display screen,
10 inchs on a side. Next PLTVEC asks for the plot file name, after
which the plot begins. When the plot is completed, the question "move
pen" appears and can be answered with the letters "L" for left, "R"
for right, "U" for up and "D" for down. On the other hand, in order
to get an XGP copy of a plot (or even a video file); type "R
XAP;L0,0;*<file>;" or "R XIP;L0,0;*<file>;". Futher details on XAP
and XIP are available from the system HELP command.
5.3 VIDEO IMAGE DISPLAY: DDVID.
After a V2D file is converted into a television file by the
program MKVID; the picture, which is in standard Hand/Eye format, may
be displayed on the video synthesizer via the Data Disc using the
program DDVID. To display a television image using DDVID, type "R
DDVID <return> E <return> I<filename> <return> R<return>".
DDVID will type a list of its commands in response to a question mark.
5.4 GEOMED COMMAND FILES.
Contrary to its design philosophy, GEOMED will accept commands
from a file. The proper design philosophy encourages the would be geometric
programmer to use the LISP embedded or the SAIL embedded version of GEOMED
notation rather than the syntactically weak single-character jump-table
notation. A command file is executed by the "βZ" command which will ask
for a file name. The file should have no line numbers. Comments may
be included among the commands prefixed by "∃" and terminated by a carriage-return
and line-feed. A "α∃" comment prefix will cause the comment to
be typed out; the "β∃" comment prefix will cause GEOMED to wait for the
operator to type a character; and the "ε∃" comment prefix will both print the
comment and wait.
~I0,0;λ13;FA
~JC;FA SECTION 6
~JC;FBEDITOR CONTROL COMMANDS.
~JAFA
6.1 PROGRAM CONTROL.
6.1.1 "εE" Exit GEOMED.
6.1.2 "α#" Enter DDT.
6.2 STACK COMMANDS.
6.2.1. "↔" Swap First and Second Elements of Stack.
"α↔" Swap First and Third Elements of Stack.
"β↔" Swap First and Last Elements of Stack.
"ε↔" Swap Second and Third Elements of Stack.
6.2.2 "↓" Duplicate Push Stack Down.
"↑" Discard Pop Stack.
6.2.3 "α↓" Rotate the Stack Down.
"α↑" Rotate the Stack Up.
6.2.4 "⊗" Push Universe Node into the Stack.
"αC" Push the Now Camera into the Stack.
6.3 BODY NAMING AND RETRIEVING.
6.3.1 "N" Name Body.
6.3.2 "B" Body Get.
6.3.3 "αB" Body Retrieval by Name or by Numeral.
6.4 FACE AND VERTEX PERIMETER TRAVELING.
"." Fetch Counter Clockwise.
"," Fetch Clockwise.
"+" Fetch Other.
"αV<n>" Fetch Nth Vertex of a Body.
6.5 LINK FOLLOWING COMMANDS.
"<" NFACE Link. ">" PFACE Link.
"≤" NED Link. "≥" PED Link.
"∨" NVT Link. "∧" PVT Link.
"∩" DAD Link. "∪" SON Link.
"⊂" BRO Link. "⊃" SIS Link.
"←" ALT Link. "→" ALT2 Link.
"," CW Link. "." CCW Link.
6.1 PROGRAM CONTROL.
6.1.1 "εE" Exit GEOMED.
~JUFA Exit the GEOMED editor. Returns control to monitor level or
to user program level. When embedded, GEOMED returns the entity at
the top of its stack to its caller as its value.
6.1.2 "α#" Enter DDT.
Enters DDT if it exists. The SYS versions of GEOMED never
have DDT; the versions GEOMED.DMP[GEM,HE] and G.DMP[GEM,BGB] will
usually have DDT (which is actually a Swinehart RAID); and a GEOMES core
image has DDT depending on how the compile and load was done. A DDT
"αP" command will continue execution in the GEOMED listen loop.
6.2 STACK COMMANDS.
~JAFA
6.2.1 "↔" Swap First and Second Elements of the Stack.
"α↔" Swap First and Third Elements of the Stack.
"β↔" Swap First and Last Elements of the Stack.
"ε↔" Swap Second and Third Elements of the Stack.
~JUFA GEOMED commands take their arguments from and leave their
results in a pushdown stack of bodies, faces, edges and vertices.
The contents of the stack are displayed on the left hand side of the
display screen. The swap commands exchange the indicated elements of the
stack if they exist. The stack can hold one hundred entities,
although only the top thirty elements will be displayed.
~JAFA6.2.2 "↓" Duplicate Push Stack Down.
"↑" Discard Pop Stack.
~JUFA The "↓" command push the stack down and places a duplicate of
the previous top of stack into the top of stack. The "↑" command pops
the stack discarding the top element.
~JAFA6.2.3 "α↓" Rotate the Stack Down.
"α↑" Rotate the Stack Up.
~JUFA The rotate stack commands preserve the number of elements in
the stack. Rotate down pushs the stack and moves the last element to
the top. The rotate up pop the stack and moves the previous top to
the bottom.
~JAFA6.2.4 "⊗" Push Universe Node into the Stack.
"αC" Push the now camera into the Stack.
~JUFA These two commands require no arguments, but merely push the
Universe node or the current camera into the stack, so that node
linking can be started.
6.3 BODY NAMING AND RETRIEVING.
6.3.1 "N" Name Body.
This command accepts a string of up to ten characters typed
as a name for the body in the top of the stack; any characters can be
used in the name.
6.3.2 "B" Body Get.
This command will replace the edge, face, or vertex in the
top of the stack with the body to which it belongs.
6.3.3 "αB" Body Retrieval by Name or by Numeral.
Each body has a numeral corresponding to its position in its
world's body ring. The "αB" command will accept a name or numeral and
will push the indicated body into the stack.
6.4 FACE AND VERTEX PERIMETER TRAVELING.
~JAFA
"." Fetch Next Edge Counter Clockwise about Face (Vertex).
"," Fetch Next Edge Clockwise about Face (Vertex).
"+" Fetch Other Face (Vertex) of the Edge.
"αV<n>" Fetch Nth Vertex of a Body.
"≥" Fetch First Edge of a Face or Vertex.
~JUFA When the top two positions of the stack contain an edge and a
face (or an edge and a vertex) that are connected; then both are
intensified and face (vertex) perimeter traveling is possible using
the "," or the "." commands to obtain the next edge about the face
(vertex) from the given edge, going in the clockwise or counter
clockwise direction (as seen from the exterior surface of the
polyhedron). It is also possible while perimeter traveling to cross
to the other face (vertex) of the given edge by means of the "+"
command. Remember that whenever there is a face, edge or vertex in
the top of the stack, the body to which it belongs can be obtained by
using the "B" command. Mastering these commands alleviates the urge
to have a light pen, or to take prolonged trips around edge rings.
The "αV<n>" retrieves the Nth vertex around the body ring of the body
in the top of the stack; the vertex numerals are displayed when the
"αL" switch is toggled on. Trivia experts will be happy to know that
"α." and "α," fetch the next vertex (face), counter clockwise and
clockwise respectively,
from the current edge with respect to the current face (vertex).
6.5 LINK FOLLOWING COMMANDS.
~JUFA The GEOMED data structure consists of twelve word nodes which
contain links and data. The following command characters fetch
particular links of the entity in the top of the stack:
~λ3;JAFA WORD1: "<" NFACE Link. ">" PFACE Link.
WORD2: "≤" NED Link. "≥" PED Link.
WORD3: "∨" NVT Link. "∧" PVT Link.
WORD4: "∩" DAD Link. "∪" SON Link.
WORD5: "⊂" BRO Link. "⊃" SIS Link.
WORD6: "←" ALT Link. "→" ALT2 Link.
WORD7: "," CW Link. "." CCW Link.
~λ13;JUFA The root of the data structure is the UNIVERSE node, which
is unique, and which can be pushed into the stack by executing the
"⊗" command. Directly accessible from the UNIVERSE node are the
display ring and the world ring:
~λ5;JAFA "∩" of the UNIVERSE returns the "now" WORLD.
"∪" of the UNIVERSE returns the "first" WORLD.
"." of the UNIVERSE returns the "now" display.
"," of the UNIVERSE returns the "first" display.
~λ13;JUFA A display is not a node, but is rather a ring of windows. The
refresh subroutine GEODPY, refreshs the windows of the "now" display
ring.
~JAFA "⊂" and "⊃" of a WINDOW travels the Window Ring of a display.
"." and "," of a WINDOW travels the Display Ring.
Each world has at least one camera, one sun, and a ring of bodies.
~λ5;JAFA "←" of a WORLD returns the "first" SUN.
"∩" of a WORLD returns the "now" CAMERA.
"∪" of a WORLD returns the "first" CAMERA.
"." and "," of a WORLD travels the World's Body Ring.
"⊂" and "⊃" of a WORLD travels the World Ring of the UNIVERSE.
~λ13;JUFA Each camera points back to the world to which it belongs "∪"; and
belongs to that world's camera ring , "⊂" and "⊃" ; and has
potentially two rings of images: the synthetic image ring, ".", of
images from the hidden line eliminator, OCCULT; and the perceived
image ring, ",", of images from the video edge finder, CRE.
6.5 LINK FOLLOWING COMMANDS (continued).
A polyhedral surface is composed of faces, edges and
vertices. Each particular face, edge, or vertex belongs to one and
only one body; and in turn each body has a ring of faces, a ring of
edges and a ring of vertices:
~JAFA "<" and ">" of a body travels the Face Ring of that body.
"≤" and "≥" of a body travels the Edge Ring of that body.
"∨" and "∧" of a body travels the Vertex Ring of that body.
~JUFA When the "αL" switch is toggled ON, a numeral is displayed at
each vertex of the body in the top of the stack. The N'th vertex of a
body can be brought into the stack by typing "αV<n>". Besides
belonging to rings; vertices and faces have one additional link, the
PED or first edge link which points to one of the edges of the vertex
or face. The PED of a vertex or face in the top of the stack can be
obtained by typing "≥".
Besides belonging to an edge ring, each edges points at its
two faces, its two vertices and its four neighboring edges in each of
its two faces; these last four pointers are the so called "wings" of
the edge and are used to travel the perimeters of faces and vertices.
Thus with an edge in the top of the stack, either of its two faces or
two vertices can be obtained by typing one of the four characters
"<>∨∧" respectively.
The arcane link positions in words -3, -2 and -1 of a node
can be retrieved by the control "<>≤≥∨∧" respectively; while meta
"<>≤≥∨∧" will retrieve from words 6, 7 and 8. No important links are
stored in the arcane positions.
~I0,0;λ13;FA
~JC;FA SECTION 7
~JC;FBDISPLAY CONTROL COMMANDS.
~λ5;JAFA
7.1 STATUS DISPLAY.
7.1.1 "≡" Status Display Toggle.
"α≡" Toggle Now Window's Darken Bit.
"#" Clear the page printer.
7.1.2 "∂" Datum Display Toggle.
"α∂" Datum Format Toggle.
7.1.3 "L" Toggle FEV Lights Switch.
"αL" Toggle Body Lights Switch.
"βL" Toggle Frame Lights Switch.
7.2 HELP DISPLAY.
"?" Information Prefix.
"H" Help.
"αH" Unhelp.
7.3 DISPLAY MODES.
"space" Display Refresh, GEODPY.
"ALT" GEODPY with hidden lines eliminated.
"αALT" GEODPY with back side faces eliminated.
"βALT" GEODPY everything visible.
"εALT" GEODPY with OCCULT diagonostics.
"_" Sticky Alt.
"α_" Sticky αALT.
"β_" Sticky βALT.
"ε_" Sticky εALT.
7.4 EDGE DISPLAY BITS.
7.4.1 "αD" Darken.
"εD" Undarken.
7.4.2 "X NSHARP"
7.5 FACE COLORING.
"X COLOR <n>RED <n>GRN <n>BLU <n>ALB"
7.6 CAMERA COMMANDS.
"αC" Push now camera into the stack.
"βC" Make new camera.
"β}" Step now camera forwards.
"β{" Step now camera backwards.
"αF" Set Camera's Focal Plane distance.
7.7 WORLDS AND WINDOWS.
"W" Make Window in Now Display Ring.
"αW" Make Window in New Display Ring.
"βW" Make New World.
"{" and "}" Step Now Display.
"α{" and "α}" Step Now World.
7.8 IMAGE RINGS.
"αT" Make a Simulated Image Body.
"←" and "→" Step Perceived CRE Image Ring.
"α←" and "α→" Step Predicted OCCULT Image Ring.
7.1 STATUS DISPLAY.
~λ13;JUFA The execution of nearly every GEOMED command is followed by
the two display refresh routines called GEODPY and STADPY. STADPY
refreshes the stack display, the editor status display, the node
contents display, and the top of stack brighteners called "the
lights" which are governed by the "L" command. GEODPY scans the "now"
display ring of the universe node, and refreshes a piece of glass for
each window having a camera.
~JAFA7.1.1 "≡" Status Display Toggle.
"α≡" Toggle Now Window's Darken Bit.
"#" Clear the page printer.
~JUFA The STADPY (status display) is turned on and off by the "≡"
command. The "α≡" command will turn the window border on and off,
(that rectangle). The "#" command types four form feeds, for
clearing the page printer of visible characters.
~JAFA7.1.2 "∂" Datum Display Toggle.
"α∂" Datum Format Toggle.
~JUFA The "∂" command causes the contents of the node at the top of
the stack to be displayed in the lower right hand corner of the
screen. Frame, body and camera nodes have a special display which
indicates their location and orientation; the special display format
can be toggled on and off by means of the "α∂" command. In the
regular format node display, the appropriate link following commands
for the different words of the node are indicated.
~JAFA7.1.3 "L" Toggle FEV Lights Switch.
"αL" Toggle Body Lights Switch.
"βL" Toggle Frame Lights Switch.
~JUFA When the "L" switch is on; faces, edges and vertices in the
top of the stack are intensified. When the "αL" switch is on,
numerals are displayed for all the vertices of the body in the top of
the stack. The vertex numerals can be used for obtaining a particular
vertex using the "εV" command. When the "βL" switch is on, three
vectors are displayed indicating the direction of the axes of the
current frame of reference; the vectors are labeled respectively by a
letter "X", "Y", or "Z" followed by a number between -1.0 and +1.0
indicating whether the vector is going away or coming towards the
current camera.
7.2 HELP DISPLAY.
~JAFA "?" Information Prefix.
"H" Help.
"αH" Unhelp.
~JUFA Typing a question mark "?" followed by any character will
type a one line reminder of what commands are invoked by that
character. The "H" command allows the user to read this document a
page at a time while using GEOMED. Help starts by displaying page-4
and waits for other desired page numbers; typing a carraige return
will exit the help with the display persisting, control carraige
return will exit the help with the display cleared. The "αH" command
clears the HELP display glass.
7.3 DISPLAY MODES.
~λ5;JAFA
"space" Display Refresh, GEODPY.
"ALT" GEODPY with hidden lines eliminated.
"αALT" GEODPY with back side faces eliminated.
"βALT" GEODPY everything visible.
"εALT" GEODPY with OCCULT diagonostics.
"_" Sticky Alt.
"α_" Sticky αALT.
"β_" Sticky βALT.
"ε_" Sticky εALT.
~λ13;JUFA There are two basic display modes: with and without the
hidden lines eliminated. Initially the display refresh displays all
the lines that are visible from the simulated cameras of the windows
of the now display ring. The "ALT" commands do one refresh in the
mode selected by the control bits. An easy hidden line elimination
takes less than a second; the hardest take up to thirty seconds. The
underbar commands, "_", make the selected display refresh mode
sticky, all refreshes are done in that mode until the next underbar.
The spacebar command redoes the last refresh.
7.4 EDGE DISPLAY BITS.
7.4.1 "αD" Darken.
"εD" Undarken.
~JUFA Given a body or an edge in the top of the stack; these two
commands set or reset the darken bit all the specified edges.
Darkened edges will not be intensified by the display refresh.
7.4.2 "X NSHARP"
"X GOURAUD"
Given a body or an edge in the top of the stack, these two
extended scanner commands set the "not sharp" and the "Gouraud" bits,
respectively all the edges of the body or of the given edge. The two
bits specify different kinds of intensity smoothing to the "βO"
command. The "not sharp" bit causes not sharp and not folded
edges to be not visible after a hidden line elimination,
which yields line drawings with a rounded appearance.
7.5 FACE COLORING.
"X COLOR <n>RED <n>GRN <n>BLU <n>ALB"
The coloring command applied to a body or a face sets the
bytes of words 4 and 5 of all the faces given. The <n> arguments
represent percentage values between 0 and 100; the argument must be
suffixed by a letter: R, G, B or A standing for red, green, blue and
albedo. Combining the colors red and green gives yellow; red and blue
gives lavender; blue and green give a light sky blue. Lowering the
albedo turns red into crimson, yellow into brown, green into dark
green, sky-blue into slate, blue into deep blue, and lavender into
purple.
In order to get the so called "I and C" required by DDVID's
color command, "C"; suffix the filename you type to MKVID with a "/C"
switch. To display a color television picture on the color
synthesizer; you must remove a BNC terminator from the color
synthesizer, which is located in the kludge bay above the video
switch cable fan out; you must place the toggle on the upper left of
the color television set in the up position; and you must give the
following commands to DDVID: "C<filename> <return> E<return>
R<return>".
The color synthesizer requires twelve data disc channels,
which are usually not available in the day. The intensity channels
are 36, 35, 34, 33, 37 and 32; the color channels are 31, 24, 23, 27,
30 and 25. The system information programs DDUSE and FINGER will type
information on who is using which channels and where particular users
are located.
7.6 CAMERA COMMANDS.
~JAFA "αC" Push now camera into the stack.
"αF" Set Camera's Focal Plane distance.
"βC" Make new camera.
"β}" Step now camera forwards.
"β{" Step now camera backwards.
~JUFA There are two basic camera commands: "αC" and "αF". The "αC"
command will push the now camera node into the stack. The
"αF<distance>" command will set the now camera's focal plane distance
to the given value, the distance is assumed to be in units of
millimeters. The initial focal plane distance is 12.5 mm. The
additional camera commands allow the creation and use of a ring of
cameras. The "βC" command will create a new camera at the end of the
camera ring of the now world. The "β}" and "β{" commands will advance
or retreat the now camera around the camera ring.
7.7 WORLDS AND WINDOWS.
~JAFA "W" Make Window in Now Display Ring.
"αW" Make Window in New Display Ring.
"βW" Make New World.
"{" and "}" Step Now Display.
"α{" and "α}" Step Now World.
~JUFA Although, the data structure below GEOMED allows many worlds
and windows; these commands are not intended for general use.
The "W" command will make a new display window, such as the one made
by the crosseyed stereo pairs' macro, "β∞". Windows can be scaled and
moved about the screen using the Euclidean transformations, one
translation unit corresponds to 100 display units. The "αW" command
will make a new window in a new display refresh ring; and the "{",
"α{", "α}" and "}" will as stated advance the display or world rings.
When there is more than one camera (or one world) the node
identification of the now camera (or now world) is displayed in the
status.
7.8 IMAGE RINGS.
~JAFA
"αT" Make a Simulated Image Body.
"α←" and "α→" Step Predicted OCCULT Image Ring.
"β←" and "β→" Step Perceived CRE Image Ring.
~JUFA The results of a hidden line elimination can be used to
create a special kind of polyhedron that approximates the image. An
image polyhedron is like a photographic print with faces, edges and
vertices representing the details of the image that is on the print.
The "αT command (take a picture) creates such an image polyhedral
body and attachs it to the OCCULT image ring of the noew camera.
Similar to "αT", the "βI" command inputs an image polyhedral bodies
from a CRE file and attachs them to the CRE image ring of the now
camera. The "αT" command images are synthetic and the "βI" command
images are perceived; the display refresh includes the first CRE and
the first OCCULT image of the now camera ring (as well as its usual
view of its simulated world). The control and meta, left and right
arrow, commands will step the CRE and OCCULT rings as stated above.
The creation of structures for both synthetic and perceived images
brings us to the start of computer vision and the conclusion of
GEOMED.
~I0,0;λ2;FA
~JC;FA SECTION 8
~JC;FBCOMMAND SUMMARY BY LEXICAL ORDER.
~JA;I150,0;FA
000 NULL No operation.
001 ↓ Push stack down.
α↓ Rotate stack down.
002 α Control key prefix.
003 β Meta key prefix.
004 ∧ PVT, Positive vertex link.
005 ¬ Evert Body.
α¬ Body Subtraction.
006 ε Meta-Control keys prefix.
007 π Set rotation strength, RDEL.
010 λ Set translation strength, TDEL.
011 TAB No operation.
012 LF No operation.
013 VT No operation.
014 FF No operation.
015 CR Reset iteration count.
016 ∞ Instant cube.
α∞ Instant torus.
β∞ Crosseyed stereo.
017 ∂ Datum display Toggle.
α∂ Datum display format Toggle.
020 ⊂ BRO, parts tree link.
021 ⊃ SIS, parts tree link.
022 ∩ DAD, parts tree link.
α∩ Body Intersection.
023 ∪ SON, parts tree link.
α∪ Body Union.
024 ∀ Enable all body motions.
α∀ Disable frame motion.
β∀ Disable vertex motion.
ε∀ Disable parts motion.
025 ∃ Comment prefix.
∃ Print comment.
β∃ Wait for character.
ε∃ Print comment and wait.
026 ⊗ Push universe node into stack.
027 ↔ Swap stack elements 1 and 2.
α↔ Swap stack elements 1 and 3.
β↔ Swap stack elements 1 and last.
ε↔ Swap stack elements 2 and 3.
030 _ Sticky ALT display refresh.
α_ Sticky αALT display refresh.
β_ Sticky βALT display refresh.
ε_ Sticky εALT display refresh.
031 → ALT2, link fetch.
032 TILDE No operation.
033 ≠ No operation.
034 ≤ NED, link fetch.
035 ≥ PED, link fetch.
036 ≡ Toggle status display enable.
α≡ Toggle window display enable.
037 ∨ NVT, link fetch.
040 SPACE Display refresh.
041 ! Set translation default.
042 " No operation.
043 # Clear page printer.
α# Enter DDT.
~JA;I150,0;FA
044 $ Make convex.
α$ Edge slurp.
045 % Set DDEL, dilation strength.
046 & No operation.
047 ' No operation.
050 ( Euclidean transformation minus Y.
051 ) Euclidean transformation plus Y.
052 * Euclidean transformation plus Z.
053 + Fetch other face or vertex.
054 , Fetch clockwise.
055 - Euclidean transformation minus Z.
056 . Fetch counter clockwise.
057 / Halve strength of transformation.
060-071 DIGITS 0 THRU 9
072 : Euclidean transformation plus X.
073 ; Euclidean transformation minus X.
074 < NFACE, link fetch.
075 = No operation.
076 > PFACE, link fetch.
077 ? Information prefix.
100 @ Set rotation default.
101 A Attach.
βA Cycle Axis count.
102 B Body of a face, edge or vertex.
αB Retrieve body by numeral or by name.
103 C Copy.
αC Push now camera into the stack.
104 D Detach.
αD Darken.
εD Undarken.
105 E Make edge and vertex.
εE Exit GEOMED.
106 F Step frame selector forwards.
αF Accept focal plane distance.
βF Step frame selector backwards.
107 G Glue face-face.
110 H Help display.
111 I Input B3D.
αI Input CAM.
βI Input CRE.
εI Input GEM.
112 J Join vertex-vertex.
113 K Kill entity.
αK Kill edge and vertex.
114 L Face, edge, vertex lights toggle.
αL Body lights toggle.
βL Frame of reference lights toggle.
115 M Midpoint and edge.
116 N Name a body.
117 O Output B3D.
αO Output CAM.
βO Output V2D.
εO Output GEM.
120 P Plot file output.
121 Q Toggle frame origin switch.
122 R Rotation completion.
~JA;I150,0;FA
123 S Sweep cylinder.
αS Sweep pyramid.
βS Sweep cylinder edges not sharp.
εS Sweep pyramid edges not sharp.
124 αT Take a simulated picture.
125 U Unmove a body.
126 V Make vertex body.
αV Retrieve Nth vertex of a body.
βV Make body node.
127 W Make window in now display ring.
αW Make window in a new display ring.
βW Make new world at end of world ring.
130 X Extended command scanner:
PLACE <x> <y> <z>
ORIENT <pan> <tilt> <swing>
CUBIC <X width> <Y height> <Z depth>
BALL <radius> <M longitudes> <N latitudes>
CYLN <radius> <N sides> <Z length>
CUT <x> <y> <z>
COLOR <n>RED <n>BLU <n>GRN <n>ALBEDO
NSHARP
PRISMOID
SILHOUETTE <zmin> <zmax>
131 Y No operation.
132 βZ Read commands from GEO text file.
133 [ No operation.
134 \ Double strength of transformation.
135 ] No operation.
136 ↑ Pop stack.
α↑ Rotate stack upwards.
137 ← ALT link fetch.
α← Step thru simulated image ring of now camera.
140 ` No operation.
141 THRU 172 Lower case letters same as upper case.
173 { Step now display backwards.
α{ Step now world backwards.
β{ Step now camera backwards.
174 | Invert edge linear orientation.
175 ALT Display refresh with hidden lines eliminated.
αALT Display refresh with backside faces eliminated.
βALT Display refresh with everything visible.
εALT Display refresh with OCCULT diagonostics.
176 } Step now display forwards.
α} Step now world forwards.
β} Step now camera forwards.
177 RUBOUT No operation.